home *** CD-ROM | disk | FTP | other *** search
/ Java Developer's Companion / Java Developer's Companion.iso / documentation / tutorial / example / HighlightFilter.java < prev    next >
Encoding:
Java Source  |  1997-07-13  |  3.5 KB  |  99 lines

  1. /*
  2.  * Copyright (c) 1995-1997 Sun Microsystems, Inc. All Rights Reserved.
  3.  *
  4.  * Permission to use, copy, modify, and distribute this software
  5.  * and its documentation for NON-COMMERCIAL purposes and without
  6.  * fee is hereby granted provided that this copyright notice
  7.  * appears in all copies. Please refer to the file "copyright.html"
  8.  * for further important copyright and licensing information.
  9.  *
  10.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
  11.  * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  12.  * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  13.  * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
  14.  * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  15.  * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
  16.  */
  17. /*
  18.  * @(#)HighlightFilter.java    1.2 95/10/13  
  19.  *
  20.  * Copyright (c) 1994-1995 Sun Microsystems, Inc. All Rights Reserved.
  21.  *
  22.  * Permission to use, copy, modify, and distribute this software
  23.  * and its documentation for NON-COMMERCIAL or COMMERCIAL purposes and
  24.  * without fee is hereby granted. 
  25.  * Please refer to the file http://java.sun.com/copy_trademarks.html
  26.  * for further important copyright and trademark information and to
  27.  * http://java.sun.com/licensing.html for further important licensing
  28.  * information for the Java (tm) Technology.
  29.  * 
  30.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
  31.  * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  32.  * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  33.  * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
  34.  * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  35.  * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
  36.  * 
  37.  * THIS SOFTWARE IS NOT DESIGNED OR INTENDED FOR USE OR RESALE AS ON-LINE
  38.  * CONTROL EQUIPMENT IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE
  39.  * PERFORMANCE, SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT
  40.  * NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL, DIRECT LIFE
  41.  * SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE FAILURE OF THE
  42.  * SOFTWARE COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SEVERE
  43.  * PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH RISK ACTIVITIES").  SUN
  44.  * SPECIFICALLY DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR
  45.  * HIGH RISK ACTIVITIES.
  46.  */
  47.  
  48. import java.applet.Applet;
  49. import java.awt.Image;
  50. import java.awt.Graphics;
  51. import java.awt.Rectangle;
  52. import java.util.StringTokenizer;
  53. import java.util.Vector;
  54. import java.util.Hashtable;
  55. import java.net.URL;
  56. import java.awt.image.*;
  57. import java.net.MalformedURLException;
  58.  
  59. /**
  60.  * An image filter to highlight an image by brightening or darkening
  61.  * the pixels in the images.
  62.  *
  63.  * @author     Jim Graham
  64.  * @version     1.2, 13 Oct 1995
  65.  */
  66. class HighlightFilter extends RGBImageFilter {
  67.     boolean brighter;
  68.     int percent;
  69.  
  70.     public HighlightFilter(boolean b, int p) {
  71.     brighter = b;
  72.     percent = p;
  73.     canFilterIndexColorModel = true;
  74.     }
  75.  
  76.     public int filterRGB(int x, int y, int rgb) {
  77.     int r = (rgb >> 16) & 0xff;
  78.     int g = (rgb >> 8) & 0xff;
  79.     int b = (rgb >> 0) & 0xff;
  80.     if (brighter) {
  81.         r = (255 - ((255 - r) * (100 - percent) / 100));
  82.         g = (255 - ((255 - g) * (100 - percent) / 100));
  83.         b = (255 - ((255 - b) * (100 - percent) / 100));
  84.     } else {
  85.         r = (r * (100 - percent) / 100);
  86.         g = (g * (100 - percent) / 100);
  87.         b = (b * (100 - percent) / 100);
  88.     }
  89.     if (r < 0) r = 0;
  90.     if (r > 255) r = 255;
  91.     if (g < 0) g = 0;
  92.     if (g > 255) g = 255;
  93.     if (b < 0) b = 0;
  94.     if (b > 255) b = 255;
  95.     return (rgb & 0xff000000) | (r << 16) | (g << 8) | (b << 0);
  96.     }
  97. }
  98.  
  99.